//
//  CPBaseTableViewModel.h
//  jhf
//
//  Created by 计海峰 on 2019/6/5.
//  Copyright © 2019 计海峰. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <CooperSDK/CooperSDK.h>

#import "CPBaseViewModel.h"

typedef void(^ _Nullable LongPressBlock)(NSIndexPath * _Nullable indexPath, UIGestureRecognizerState state);

NS_ASSUME_NONNULL_BEGIN

@interface CPBaseTableViewModel : CPBaseViewModel

#pragma mark - 设置 长按
- (void)configLongPress:(UITableView *)tableview completion:(LongPressBlock)completionHandler;

#pragma mark - 设置 header footer
// 会执行 refreshData
- (void)configHeader:(UITableView *)tableview completion:(void (^ __nullable)(id __nullable result))completionHandler;

- (void)checkFooter:(UITableView *)tableview result:(id)result pagesize:(int)pagesize;

// 会执行 pullData
- (void)configFooter:(UITableView *)tableview completion:(void (^ __nullable)(id __nullable result))completionHandler;

- (void)cancelFooter:(UITableView *)tableview;

#pragma mark - 索引
- (NSArray<NSString *> *)sectionIndexTitles:(UITableView *)tableview;

- (NSInteger)selectSectionIndexTitles:(UITableView *)tableview title:(NSString *)title index:(NSInteger)index;

#pragma mark - 更新数据
- (void)refreshData:(void (^ __nullable)(id __nullable result))completionHandler ;

- (void)forData:(void (^)(id _Nullable))completionHandler;

- (void)pullData:(void (^ __nullable)(id __nullable result))completionHandler ;

#pragma mark - 刷新部分
- (void)reloadSections:(NSIndexSet *)sections tableview:(UITableView *)tableview;

- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths tableview:(UITableView *)tableview;

#pragma mark - delegate and datasource
- (NSInteger)sectionsCount;

- (NSInteger)sectionCellCount:(NSInteger)section tableView:(UITableView *)tableView;

- (UIView *)sectionHeaderView:(NSInteger)section tableView:(UITableView *)tableView;

- (CGFloat)sectionHeaderHeight:(NSInteger)section tableView:(UITableView *)tableView;

- (UIView *)sectionFooterView:(NSInteger)section tableView:(UITableView *)tableView;

- (CGFloat)sectionFooterHeight:(NSInteger)section tableView:(UITableView *)tableView;

- (UITableViewCell *)cell:(NSIndexPath *)indexPath tableView:(UITableView *)tableView;

- (UITableViewCell *)defaultCell:(NSIndexPath *)indexPath tableView:(UITableView *)tableView reusableIdentier:(NSString *)identifier;

- (CGFloat)cellHeight:(NSIndexPath *)indexPath tableView:(UITableView *)tableView;

- (NSArray<UITableViewRowAction *> *)rowsAction:(NSIndexPath *)indexPath tableView:(UITableView *)tableView;

- (void)select:(NSIndexPath *)indexPath tableView:(UITableView *)tableView;

- (void)willDisplayCell:(NSIndexPath *)indexPath tableView:(UITableView *)tableView cell:(UITableViewCell *)cell;

- (void)didScroll:(UIScrollView *)scrollView;

- (void)scrollTo:(UIScrollView *)scrollView indexPath:(NSIndexPath *)indexPath;

- (NSArray<UITableViewRowAction *> *)rowActionIndexPath:(NSIndexPath *)indexPath tableView:(UITableView *)tableView;

- (CPEmptyDataConfig *)emptyDataConfig;

@end

NS_ASSUME_NONNULL_END
